/*
 * to use online script you can use jquery getScript plugin as follows:
 *
 * $.getScript('http://sisense.com/abc.js', function(data, textStatus)
 * {
 *		// your code which requires abc.js here
 * });
 *
 * // more info at: http://api.jquery.com/jQuery.getScript/
 *
 */


/*
 * set to true when replacing widget rendering engine.
 */
this.isCustom = false;

/*
 * exectuted after the widget controller was initialized, useful when overriding entire widget in order to instantiate entirely different implementation.
 *
 * @param {args} wraps all function arguments, including widget, dashboard and widget controller instances.
 *
 */
this.init = function (args) {

};

/*
 * executed before the widget query result is loaded to the DOM and allows canceling such beavior and replace it with custom widget implementation.
 * to cancel the default population just set 'args.cancel = true' and the widget default population will be ignored.
 *
 * @param {args} wraps all function arguments, including query result, widget, dashboard and widget controller instances.
 *
 */
this.beforeResultLoaded = function (args) {
};

/*
 * executed after the widget result were added to the DOM. useful to apply DOM tweaks after query result population.
 *
 * @param {args} wraps all function arguments, including query result, widget, dashboard and widget controller instances.
 *
 */
this.afterResultLoaded = function (args) {

    var options = {

        itemName: "Pending",
        color: "rgb(0, 173, 100)"
    };

    var colorMappings = [

        { itemName: "Pending", color: "rgb(0, 173, 100)" },
        { itemName: "Closed - Withdrawn", color: "rgb(0, 0, 170)" }
    ];

    var containerId = $(args.element).attr('id');
    var container = $('#'+containerId);

    $.each(colorMappings, function (index, colorMap) {

        var barIndex = $.inArray(colorMap.itemName, args.result.dataset.panels[0].dataItems);
        if (barIndex < 0) return;

        var rect;
        if (rect = container.find('.highcharts-series rect')[barIndex]) {

            $(rect).attr("fill", colorMap.color);
        }
        else if (rect = container.find('.highcharts-series shape')[barIndex]) {

            $(rect).attr("fillcolor", colorMap.color);
        }
    });
};

/*
 * exectuted after all dashboard widget models were initialiezed. useful for binding with other widget events.
 *
 * @param {args} wraps all function arguments, including widget, dashboard and widget controller instances.
 *
 */
this.handleDashboardInitialized = function (args) {
};
